/*
 * nipcManager.c
 *
 *  Created on: 24/09/2011
 *      Author: utn_so
 */

#include "nipcManager.h"



char *serializarNipc(int32_t type, char* message,int32_t payloadLength)
{
	PAQUETE_NIPC_CABECERA newMessage;
	newMessage.type = type;
	newMessage.payloadlength = payloadLength;


	char *buffer =malloc(sizeof(PAQUETE_NIPC_CABECERA) + payloadLength);
	memcpy(buffer, &newMessage,sizeof(PAQUETE_NIPC_CABECERA));

	char payload[payloadLength];
	memcpy(payload,message,payloadLength);


	memcpy(buffer+sizeof(PAQUETE_NIPC_CABECERA), payload, payloadLength);

	return buffer;

}



stPedido *recibirDeSocket(int32_t socket, PAQUETE_NIPC_CABECERA *cabecera)
{
	stPedido *pedido;
	pedido = (stPedido *)malloc(sizeof(stPedido));
	int32_t nbytes = 0;
	nbytes = recv(socket, pedido, cabecera->payloadlength, MSG_WAITALL);
	//*total=nbytes;
	//printf("El tamanio a leer es [%d]", cabecera->payloadlength);
	//for(*total=0; *total < cabecera->payloadlength; *total+=nbytes){
	//	nbytes = recv(socket, pedido/*+*total */, cabecera->payloadlength-*total, 0);
	//}
	return pedido;
}


